home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).zip / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).adf / tracker.library / Demos / FIB.asm < prev    next >
Assembly Source File  |  1994-01-09  |  5KB  |  229 lines

  1. ;TestProgramm für "tracker.library"
  2.  
  3. ; Testet TRK_ExamineName, TRK_ExNext und TRK_FreeFIB
  4.  
  5.     NOLIST
  6.     INCLUDE "exec/LVO.i"
  7.     INCLUDE "exec/memory.i"
  8.     INCLUDE "dos/LVO.i"
  9.     INCLUDE "dos/dos.i"
  10.     INCLUDE "dos/datetime.i"
  11.     INCLUDE "dos/dosextens.i"
  12.     INCLUDE "tracker.i"
  13.     LIST
  14.  
  15. Print:    MACRO
  16.     move.l    Output,d1
  17.     move.l    #\1,d2
  18.     CALLDOS VFPrintf
  19.     ENDM
  20.  
  21. _TrackerBase:    EQUR a5
  22. _DosBase:    EQUR a4
  23. Output:     EQUR d7
  24.  
  25. ; WB-Message ?
  26.     sub.l    a1,a1        ;a1=0->eigener Task
  27.     CALLEXEC FindTask    ;Wo darf man denn nachschauen ?
  28.     move.l    d0,a0
  29.     tst.l    pr_CLI(a0)      ;von CLI oder WB aus gestartet ?
  30.     bne    fromCLI
  31. ;von WB aus:
  32.     lea    pr_MsgPort(a0),a0
  33.     move.l    a0,-(sp)
  34.     CALLEXEC WaitPort    ;auf Start-Message warten
  35.     move.l    (sp)+,a0
  36.     CALLEXEC GetMsg ;muß nachher beantwortet werden
  37.     move.l    d0,WBenchMsg
  38.  
  39. fromCLI:
  40. ; Tracker-Library öffnen
  41.     OPENLIB TrName,3
  42.     tst.l    d0
  43.     beq    ende_all
  44.     move.l    d0,_TrackerBase
  45.     TRK_OPENSTDLIB DOS,36
  46.     tst.l    d0
  47.     beq    ende_trk
  48.     move.l    d0,_DosBase
  49.  
  50.     tst.l    WBenchMsg
  51.     bne    fromWB
  52. ;von CLI aus -> Ausgaben ins CLI-Fenster
  53.     CALLDOS Output
  54.     move.l    d0,Output
  55.     bra    main
  56. ;von WB aus gestartet -> eigenes Window nötig
  57. fromWB: move.l    #WdName,d1
  58.     move.l    #MODE_OLDFILE,d2
  59.     CALLTRK TRK_Open
  60.     move.l    d0,Output
  61. ;---------------------------------------------------------------------------
  62. ;Haupt-Testteil
  63.  
  64. EXAMINE: MACRO    ;Name
  65.     move.l    #\1,d1
  66.     bsr    Examine
  67.     ENDM
  68. EXNEXT: MACRO    ;was
  69.     move.l    \1,d2
  70.     bsr    ExNext
  71.     ENDM
  72. FREE:    MACRO    ;was
  73.     move.l    \1,d1
  74.     bsr    FreeFIB
  75.     ENDM
  76.  
  77. main:    EXAMINE DirName_1
  78.     move.l    d0,d4
  79.     EXNEXT    d0
  80.     EXAMINE DirName_2
  81.     move.l    d0,d6
  82.     EXNEXT    d0
  83.     EXAMINE DirName_3
  84.     move.l    d0,d5
  85.     EXNEXT    d4
  86.     FREE    d6
  87.     EXAMINE DirName_4
  88.     FREE    d5
  89.     EXAMINE DirName_5
  90.  
  91. ;---------------------------------------------------------------------------
  92.  
  93. ende_main:
  94. ;ggf. End-Botschaft und Verzögerung
  95.     tst.l    WBenchMsg
  96.     beq    ende_trk
  97.     move.l    Output,d1
  98.     move.l    #GoodBye,d2
  99.     moveq    #GoodByeLen,d3
  100.     CALLDOS Write
  101.     move.l    #150,d1
  102.     CALL    Delay
  103. ;Library schließen
  104. ende_trk:
  105.     CLOSELIB _TrackerBase
  106. ende_all:
  107.     tst.l    WBenchMsg    ;war da was ?
  108.     beq    toCLI        ;na dann halt nicht
  109. ;Message zur WB zurück
  110.     move.l    WBenchMsg,a1
  111.     CALLEXEC ReplyMsg
  112. toCLI:    moveq    #0,d0
  113.     rts
  114.  
  115. ;---------------------------------------------------------------------------
  116. ; Unterprogramm: FIB&Lock freigeben (mit Bestätigung)
  117.  
  118. FreeFIB:
  119.     move.l    a1,-(sp)
  120.     CALLTRK TRK_FreeFIB
  121.     move.l    sp,d3
  122.     Print    FreeMsg
  123.     addq.l    #4,sp
  124.     rts
  125. ;---------------------------------------------------------------------------
  126. ; Unterprogramm: nächste Datei untersuchen lassen
  127. ; Parameter: d2 = Adresse des bisher genutzten FIB
  128. ; Ergebnis: -
  129.  
  130. ExNext: move.l    d2,-(sp)
  131.     move.l    sp,d3
  132.     Print    Next
  133.     move.l    (sp)+,d2
  134.     CALLTRK TRK_ExNext
  135.     tst.w    d0
  136.     bne    1$
  137.     Print    NoNext
  138.     rts
  139. 1$:    move.l    d2,-(sp)
  140.     Print    YesNext
  141.     move.l    (sp),a0
  142.     bra    PrintInfo
  143. ;---------------------------------------------------------------------------
  144. ; Unterprogramm: Namen untersuchen lassen
  145. ; Parameter: d1 = Adresse des Filenamens
  146. ; Ergebnis: der FIB
  147.  
  148. Examine:
  149.     move.l    d1,-(sp)
  150.     move.l    sp,d3
  151.     Print    FileTxt
  152.     move.l    (sp),d1
  153.     CALLTRK TRK_ExamineName
  154.     tst.l    d0
  155.     bne    1$
  156.     Print    not_existant
  157.     add.w    #4,sp
  158.     rts
  159. 1$:    move.l    d0,(sp)
  160.     move.l    sp,d3
  161.     Print    existant
  162.     move.l    (sp),a0
  163. ;Das Datum konvertieren:
  164. PrintInfo:
  165.     lea    _DateTime,a1
  166.     move.l    fib_DateStamp(a0),(a1)
  167.     move.l    fib_DateStamp+4(a0),4(a1)
  168.     move.l    fib_DateStamp+8(a0),8(a1)
  169.     move.l    a1,d1
  170.     CALLDOS DateToStr
  171. ;den ganzen Krimskrams ausgeben:
  172.     move.l    (sp),a0
  173.     pea    fib_Comment(a0)
  174.     pea    Time
  175.     pea    Date
  176.     pea    WeekDay
  177.     move.l    fib_NumBlocks(a0),-(sp)
  178.     move.l    fib_Size(a0),-(sp)
  179.     move.l    fib_EntryType(a0),-(sp)
  180.     move.l    fib_Protection(a0),-(sp)
  181.     move.l    fib_DirEntryType(a0),-(sp)
  182.     move.l    fib_DiskKey(a0),-(sp)
  183.     pea    fib_FileName(a0)
  184.     move.l    sp,d3
  185.     Print    Info
  186.     add.w    #44,sp
  187.     move.l    (sp)+,d0
  188.     rts
  189. ;---------------------------------------------------------------------------
  190. WBenchMsg:    dc.l    0
  191.  
  192. _DateTime:
  193.     dc.l    0,0,0
  194.     dc.b    FORMAT_DOS,0
  195.     dc.l    WeekDay,Date,Time
  196.  
  197. TrName: TRACKERNAME
  198.  
  199. WdName:     dc.b "CON:0/0/640/200/Examine-Test für tracker.library",0
  200. GoodBye:    dc.b 10,"Bye - closing soon !"
  201. GoodByeLen:    equ *-GoodBye
  202. DirName_1:    dc.b "sys:",0
  203. DirName_2:    dc.b "s:Startup-Sequence",0
  204. DirName_3:    dc.b "l:",0
  205. DirName_4:    dc.b "alpha",0
  206. DirName_5:    dc.b "RAM:",0
  207. FreeMsg:    dc.b "FIB at $%06lx freed",10,0
  208. FileTxt:    dc.b "Datei/Pfad %s",0
  209. not_existant:    dc.b " konnte nicht untersucht werden !",10,0
  210. existant:    dc.b " wurde untersucht - FIB at $%06lx"
  211. CrLf:        dc.b 10,0
  212. Next:        dc.b "ExNext($%06lx)",0
  213. NoNext:     dc.b " failed",10,0
  214. YesNext:    dc.b " succeeded",10,0
  215. Info:        dc.b "Name         = ",34,"%s",34,10
  216.         dc.b "DiskKey      = $%06lx",10
  217.         dc.b "DirEntryType = %ld",10
  218.         dc.b "Protection   = $%02lx",10
  219.         dc.b "EntryType    = %ld",10
  220.         dc.b "Size         = %ld",10
  221.         dc.b "Blocks       = %ld",10
  222.         dc.b "Date         = %s %s %s",10
  223.         dc.b "Comment      = ",34,"%s",34,10,0
  224. WeekDay:    ds.b LEN_DATSTRING
  225. Date:        ds.b LEN_DATSTRING
  226. Time:        ds.b LEN_DATSTRING
  227.  
  228.     END
  229.